using System;
using System.Collections;

namespace sharpPDF.Fonts
{
	/// <summary>
	/// Class that contains several methods for the conversion between Unicode and Glyphs
	/// </summary>
	internal abstract class GlyphConverter
	{

		#region UNICODE
		private static int[] _unicode = {
										   0x0041,
										   0x00C6,
										   0x01FC,
										   0xF7E6,
										   0x00C1,
										   0xF7E1,
										   0x0102,
										   0x00C2,
										   0xF7E2,
										   0xF6C9,
										   0xF7B4,
										   0x00C4,
										   0xF7E4,
										   0x00C0,
										   0xF7E0,
										   0x0391,
										   0x0386,
										   0x0100,
										   0x0104,
										   0x00C5,
										   0x01FA,
										   0xF7E5,
										   0xF761,
										   0x00C3,
										   0xF7E3,
										   0x0042,
										   0x0392,
										   0xF6F4,
										   0xF762,
										   0x0043,
										   0x0106,
										   0xF6CA,
										   0xF6F5,
										   0x010C,
										   0x00C7,
										   0xF7E7,
										   0x0108,
										   0x010A,
										   0xF7B8,
										   0x03A7,
										   0xF6F6,
										   0xF763,
										   0x0044,
										   0x010E,
										   0x0110,
										   0x2206,
										   0x0394,
										   0xF6CB,
										   0xF6CC,
										   0xF6CD,
										   0xF7A8,
										   0xF6F7,
										   0xF764,
										   0x0045,
										   0x00C9,
										   0xF7E9,
										   0x0114,
										   0x011A,
										   0x00CA,
										   0xF7EA,
										   0x00CB,
										   0xF7EB,
										   0x0116,
										   0x00C8,
										   0xF7E8,
										   0x0112,
										   0x014A,
										   0x0118,
										   0x0395,
										   0x0388,
										   0xF765,
										   0x0397,
										   0x0389,
										   0x00D0,
										   0xF7F0,
										   0x20AC,
										   0x0046,
										   0xF766,
										   0x0047,
										   0x0393,
										   0x011E,
										   0x01E6,
										   0x011C,
										   0x0122,
										   0x0120,
										   0xF6CE,
										   0xF760,
										   0xF767,
										   0x0048,
										   0x25CF,
										   0x25AA,
										   0x25AB,
										   0x25A1,
										   0x0126,
										   0x0124,
										   0xF768,
										   0xF6CF,
										   0xF6F8,
										   0x0049,
										   0x0132,
										   0x00CD,
										   0xF7ED,
										   0x012C,
										   0x00CE,
										   0xF7EE,
										   0x00CF,
										   0xF7EF,
										   0x0130,
										   0x2111,
										   0x00CC,
										   0xF7EC,
										   0x012A,
										   0x012E,
										   0x0399,
										   0x03AA,
										   0x038A,
										   0xF769,
										   0x0128,
										   0x004A,
										   0x0134,
										   0xF76A,
										   0x004B,
										   0x039A,
										   0x0136,
										   0xF76B,
										   0x004C,
										   0xF6BF,
										   0x0139,
										   0x039B,
										   0x013D,
										   0x013B,
										   0x013F,
										   0x0141,
										   0xF6F9,
										   0xF76C,
										   0x004D,
										   0xF6D0,
										   0xF7AF,
										   0xF76D,
										   0x039C,
										   0x004E,
										   0x0143,
										   0x0147,
										   0x0145,
										   0xF76E,
										   0x00D1,
										   0xF7F1,
										   0x039D,
										   0x004F,
										   0x0152,
										   0xF6FA,
										   0x00D3,
										   0xF7F3,
										   0x014E,
										   0x00D4,
										   0xF7F4,
										   0x00D6,
										   0xF7F6,
										   0xF6FB,
										   0x00D2,
										   0xF7F2,
										   0x01A0,
										   0x0150,
										   0x014C,
										   0x2126,
										   0x03A9,
										   0x038F,
										   0x039F,
										   0x038C,
										   0x00D8,
										   0x01FE,
										   0xF7F8,
										   0xF76F,
										   0x00D5,
										   0xF7F5,
										   0x0050,
										   0x03A6,
										   0x03A0,
										   0x03A8,
										   0xF770,
										   0x0051,
										   0xF771,
										   0x0052,
										   0x0154,
										   0x0158,
										   0x0156,
										   0x211C,
										   0x03A1,
										   0xF6FC,
										   0xF772,
										   0x0053,
										   0x250C,
										   0x2514,
										   0x2510,
										   0x2518,
										   0x253C,
										   0x252C,
										   0x2534,
										   0x251C,
										   0x2524,
										   0x2500,
										   0x2502,
										   0x2561,
										   0x2562,
										   0x2556,
										   0x2555,
										   0x2563,
										   0x2551,
										   0x2557,
										   0x255D,
										   0x255C,
										   0x255B,
										   0x255E,
										   0x255F,
										   0x255A,
										   0x2554,
										   0x2569,
										   0x2566,
										   0x2560,
										   0x2550,
										   0x256C,
										   0x2567,
										   0x2568,
										   0x2564,
										   0x2565,
										   0x2559,
										   0x2558,
										   0x2552,
										   0x2553,
										   0x256B,
										   0x256A,
										   0x015A,
										   0x0160,
										   0xF6FD,
										   0x015E,
										   0xF6C1,
										   0x015C,
										   0x0218,
										   0x03A3,
										   0xF773,
										   0x0054,
										   0x03A4,
										   0x0166,
										   0x0164,
										   0x0162,
										   0x021A,
										   0x0398,
										   0x00DE,
										   0xF7FE,
										   0xF6FE,
										   0xF774,
										   0x0055,
										   0x00DA,
										   0xF7FA,
										   0x016C,
										   0x00DB,
										   0xF7FB,
										   0x00DC,
										   0xF7FC,
										   0x00D9,
										   0xF7F9,
										   0x01AF,
										   0x0170,
										   0x016A,
										   0x0172,
										   0x03A5,
										   0x03D2,
										   0x03AB,
										   0x038E,
										   0x016E,
										   0xF775,
										   0x0168,
										   0x0056,
										   0xF776,
										   0x0057,
										   0x1E82,
										   0x0174,
										   0x1E84,
										   0x1E80,
										   0xF777,
										   0x0058,
										   0x039E,
										   0xF778,
										   0x0059,
										   0x00DD,
										   0xF7FD,
										   0x0176,
										   0x0178,
										   0xF7FF,
										   0x1EF2,
										   0xF779,
										   0x005A,
										   0x0179,
										   0x017D,
										   0xF6FF,
										   0x017B,
										   0x0396,
										   0xF77A,
										   0x0061,
										   0x00E1,
										   0x0103,
										   0x00E2,
										   0x00B4,
										   0x0301,
										   0x00E4,
										   0x00E6,
										   0x01FD,
										   0x2015,
										   0x0410,
										   0x0411,
										   0x0412,
										   0x0413,
										   0x0414,
										   0x0415,
										   0x0401,
										   0x0416,
										   0x0417,
										   0x0418,
										   0x0419,
										   0x041A,
										   0x041B,
										   0x041C,
										   0x041D,
										   0x041E,
										   0x041F,
										   0x0420,
										   0x0421,
										   0x0422,
										   0x0423,
										   0x0424,
										   0x0425,
										   0x0426,
										   0x0427,
										   0x0428,
										   0x0429,
										   0x042A,
										   0x042B,
										   0x042C,
										   0x042D,
										   0x042E,
										   0x042F,
										   0x0490,
										   0x0402,
										   0x0403,
										   0x0404,
										   0x0405,
										   0x0406,
										   0x0407,
										   0x0408,
										   0x0409,
										   0x040A,
										   0x040B,
										   0x040C,
										   0x040E,
										   0xF6C4,
										   0xF6C5,
										   0x0430,
										   0x0431,
										   0x0432,
										   0x0433,
										   0x0434,
										   0x0435,
										   0x0451,
										   0x0436,
										   0x0437,
										   0x0438,
										   0x0439,
										   0x043A,
										   0x043B,
										   0x043C,
										   0x043D,
										   0x043E,
										   0x043F,
										   0x0440,
										   0x0441,
										   0x0442,
										   0x0443,
										   0x0444,
										   0x0445,
										   0x0446,
										   0x0447,
										   0x0448,
										   0x0449,
										   0x044A,
										   0x044B,
										   0x044C,
										   0x044D,
										   0x044E,
										   0x044F,
										   0x0491,
										   0x0452,
										   0x0453,
										   0x0454,
										   0x0455,
										   0x0456,
										   0x0457,
										   0x0458,
										   0x0459,
										   0x045A,
										   0x045B,
										   0x045C,
										   0x045E,
										   0x040F,
										   0x0462,
										   0x0472,
										   0x0474,
										   0xF6C6,
										   0x045F,
										   0x0463,
										   0x0473,
										   0x0475,
										   0xF6C7,
										   0xF6C8,
										   0x04D9,
										   0x200E,
										   0x200F,
										   0x200D,
										   0x066A,
										   0x060C,
										   0x0660,
										   0x0661,
										   0x0662,
										   0x0663,
										   0x0664,
										   0x0665,
										   0x0666,
										   0x0667,
										   0x0668,
										   0x0669,
										   0x061B,
										   0x061F,
										   0x0621,
										   0x0622,
										   0x0623,
										   0x0624,
										   0x0625,
										   0x0626,
										   0x0627,
										   0x0628,
										   0x0629,
										   0x062A,
										   0x062B,
										   0x062C,
										   0x062D,
										   0x062E,
										   0x062F,
										   0x0630,
										   0x0631,
										   0x0632,
										   0x0633,
										   0x0634,
										   0x0635,
										   0x0636,
										   0x0637,
										   0x0638,
										   0x0639,
										   0x063A,
										   0x0640,
										   0x0641,
										   0x0642,
										   0x0643,
										   0x0644,
										   0x0645,
										   0x0646,
										   0x0648,
										   0x0649,
										   0x064A,
										   0x064B,
										   0x064C,
										   0x064D,
										   0x064E,
										   0x064F,
										   0x0650,
										   0x0651,
										   0x0652,
										   0x0647,
										   0x06A4,
										   0x067E,
										   0x0686,
										   0x0698,
										   0x06AF,
										   0x0679,
										   0x0688,
										   0x0691,
										   0x06BA,
										   0x06D2,
										   0x06D5,
										   0x20AA,
										   0x05BE,
										   0x05C3,
										   0x05D0,
										   0x05D1,
										   0x05D2,
										   0x05D3,
										   0x05D4,
										   0x05D5,
										   0x05D6,
										   0x05D7,
										   0x05D8,
										   0x05D9,
										   0x05DA,
										   0x05DB,
										   0x05DC,
										   0x05DD,
										   0x05DE,
										   0x05DF,
										   0x05E0,
										   0x05E1,
										   0x05E2,
										   0x05E3,
										   0x05E4,
										   0x05E5,
										   0x05E6,
										   0x05E7,
										   0x05E8,
										   0x05E9,
										   0x05EA,
										   0xFB2A,
										   0xFB2B,
										   0xFB4B,
										   0xFB1F,
										   0x05F0,
										   0x05F1,
										   0x05F2,
										   0xFB35,
										   0x05B4,
										   0x05B5,
										   0x05B6,
										   0x05BB,
										   0x05B8,
										   0x05B7,
										   0x05B0,
										   0x05B2,
										   0x05B1,
										   0x05B3,
										   0x05C2,
										   0x05C1,
										   0x05B9,
										   0x05BC,
										   0x05BD,
										   0x05BF,
										   0x05C0,
										   0x02BC,
										   0x2105,
										   0x2113,
										   0x2116,
										   0x202C,
										   0x202D,
										   0x202E,
										   0x200C,
										   0x066D,
										   0x02BD,
										   0x00E0,
										   0x2135,
										   0x03B1,
										   0x03AC,
										   0x0101,
										   0x0026,
										   0xF726,
										   0x2220,
										   0x2329,
										   0x232A,
										   0x0387,
										   0x0105,
										   0x2248,
										   0x00E5,
										   0x01FB,
										   0x2194,
										   0x21D4,
										   0x21D3,
										   0x21D0,
										   0x21D2,
										   0x21D1,
										   0x2193,
										   0xF8E7,
										   0x2190,
										   0x2192,
										   0x2191,
										   0x2195,
										   0x21A8,
										   0xF8E6,
										   0x005E,
										   0x007E,
										   0x002A,
										   0x2217,
										   0xF6E9,
										   0x0040,
										   0x00E3,
										   0x0062,
										   0x005C,
										   0x007C,
										   0x03B2,
										   0x2588,
										   0xF8F4,
										   0x007B,
										   0xF8F3,
										   0xF8F2,
										   0xF8F1,
										   0x007D,
										   0xF8FE,
										   0xF8FD,
										   0xF8FC,
										   0x005B,
										   0xF8F0,
										   0xF8EF,
										   0xF8EE,
										   0x005D,
										   0xF8FB,
										   0xF8FA,
										   0xF8F9,
										   0x02D8,
										   0x00A6,
										   0xF6EA,
										   0x2022,
										   0x0063,
										   0x0107,
										   0x02C7,
										   0x21B5,
										   0x010D,
										   0x00E7,
										   0x0109,
										   0x010B,
										   0x00B8,
										   0x00A2,
										   0xF6DF,
										   0xF7A2,
										   0xF6E0,
										   0x03C7,
										   0x25CB,
										   0x2297,
										   0x2295,
										   0x02C6,
										   0x2663,
										   0x003A,
										   0x20A1,
										   0x002C,
										   0xF6C3,
										   0xF6E1,
										   0xF6E2,
										   0x2245,
										   0x00A9,
										   0xF8E9,
										   0xF6D9,
										   0x00A4,
										   0xF6D1,
										   0xF6D2,
										   0xF6D4,
										   0xF6D5,
										   0x0064,
										   0x2020,
										   0x2021,
										   0xF6D3,
										   0xF6D6,
										   0x010F,
										   0x0111,
										   0x00B0,
										   0x03B4,
										   0x2666,
										   0x00A8,
										   0xF6D7,
										   0xF6D8,
										   0x0385,
										   0x00F7,
										   0x2593,
										   0x2584,
										   0x0024,
										   0xF6E3,
										   0xF724,
										   0xF6E4,
										   0x20AB,
										   0x02D9,
										   0x0323,
										   0x0131,
										   0xF6BE,
										   0x22C5,
										   0xF6EB,
										   0x0065,
										   0x00E9,
										   0x0115,
										   0x011B,
										   0x00EA,
										   0x00EB,
										   0x0117,
										   0x00E8,
										   0x0038,
										   0x2088,
										   0xF738,
										   0x2078,
										   0x2208,
										   0x2026,
										   0x0113,
										   0x2014,
										   0x2205,
										   0x2013,
										   0x014B,
										   0x0119,
										   0x03B5,
										   0x03AD,
										   0x003D,
										   0x2261,
										   0x212E,
										   0xF6EC,
										   0x03B7,
										   0x03AE,
										   0x00F0,
										   0x0021,
										   0x203C,
										   0x00A1,
										   0xF7A1,
										   0xF721,
										   0x2203,
										   0x0066,
										   0x2640,
										   0xFB00,
										   0xFB03,
										   0xFB04,
										   0xFB01,
										   0x2012,
										   0x25A0,
										   0x25AC,
										   0x0035,
										   0x215D,
										   0x2085,
										   0xF735,
										   0x2075,
										   0xFB02,
										   0x0192,
										   0x0034,
										   0x2084,
										   0xF734,
										   0x2074,
										   0x2044,
										   0x2215,
										   0x20A3,
										   0x0067,
										   0x03B3,
										   0x011F,
										   0x01E7,
										   0x011D,
										   0x0123,
										   0x0121,
										   0x00DF,
										   0x2207,
										   0x0060,
										   0x0300,
										   0x003E,
										   0x2265,
										   0x00AB,
										   0x00BB,
										   0x2039,
										   0x203A,
										   0x0068,
										   0x0127,
										   0x0125,
										   0x2665,
										   0x0309,
										   0x2302,
										   0x02DD,
										   0x002D,
										   0x00AD,
										   0xF6E5,
										   0xF6E6,
										   0x0069,
										   0x00ED,
										   0x012D,
										   0x00EE,
										   0x00EF,
										   0x00EC,
										   0x0133,
										   0x012B,
										   0x221E,
										   0x222B,
										   0x2321,
										   0xF8F5,
										   0x2320,
										   0x2229,
										   0x25D8,
										   0x25D9,
										   0x263B,
										   0x012F,
										   0x03B9,
										   0x03CA,
										   0x0390,
										   0x03AF,
										   0xF6ED,
										   0x0129,
										   0x006A,
										   0x0135,
										   0x006B,
										   0x03BA,
										   0x0137,
										   0x0138,
										   0x006C,
										   0x013A,
										   0x03BB,
										   0x013E,
										   0x013C,
										   0x0140,
										   0x003C,
										   0x2264,
										   0x258C,
										   0x20A4,
										   0xF6C0,
										   0x2227,
										   0x00AC,
										   0x2228,
										   0x017F,
										   0x25CA,
										   0x0142,
										   0xF6EE,
										   0x2591,
										   0x006D,
										   0x00AF,
										   0x02C9,
										   0x2642,
										   0x2212,
										   0x2032,
										   0xF6EF,
										   0x00B5,
										   0x03BC,
										   0x00D7,
										   0x266A,
										   0x266B,
										   0x006E,
										   0x0144,
										   0x0149,
										   0x0148,
										   0x0146,
										   0x0039,
										   0x2089,
										   0xF739,
										   0x2079,
										   0x2209,
										   0x2260,
										   0x2284,
										   0x207F,
										   0x00F1,
										   0x03BD,
										   0x0023,
										   0x006F,
										   0x00F3,
										   0x014F,
										   0x00F4,
										   0x00F6,
										   0x0153,
										   0x02DB,
										   0x00F2,
										   0x01A1,
										   0x0151,
										   0x014D,
										   0x03C9,
										   0x03D6,
										   0x03CE,
										   0x03BF,
										   0x03CC,
										   0x0031,
										   0x2024,
										   0x215B,
										   0xF6DC,
										   0x00BD,
										   0x2081,
										   0xF731,
										   0x00BC,
										   0x00B9,
										   0x2153,
										   0x25E6,
										   0x00AA,
										   0x00BA,
										   0x221F,
										   0x00F8,
										   0x01FF,
										   0xF6F0,
										   0x00F5,
										   0x0070,
										   0x00B6,
										   0x0028,
										   0xF8ED,
										   0xF8EC,
										   0x208D,
										   0x207D,
										   0xF8EB,
										   0x0029,
										   0xF8F8,
										   0xF8F7,
										   0x208E,
										   0x207E,
										   0xF8F6,
										   0x2202,
										   0x0025,
										   0x002E,
										   0x00B7,
										   0x2219,
										   0xF6E7,
										   0xF6E8,
										   0x22A5,
										   0x2030,
										   0x20A7,
										   0x03C6,
										   0x03D5,
										   0x03C0,
										   0x002B,
										   0x00B1,
										   0x211E,
										   0x220F,
										   0x2282,
										   0x2283,
										   0x221D,
										   0x03C8,
										   0x0071,
										   0x003F,
										   0x00BF,
										   0xF7BF,
										   0xF73F,
										   0x0022,
										   0x201E,
										   0x201C,
										   0x201D,
										   0x2018,
										   0x201B,
										   0x2019,
										   0x201A,
										   0x0027,
										   0x0072,
										   0x0155,
										   0x221A,
										   0xF8E5,
										   0x0159,
										   0x0157,
										   0x2286,
										   0x2287,
										   0x00AE,
										   0xF8E8,
										   0xF6DA,
										   0x2310,
										   0x03C1,
										   0x02DA,
										   0xF6F1,
										   0x2590,
										   0xF6DD,
										   0x0073,
										   0x015B,
										   0x0161,
										   0x015F,
										   0xF6C2,
										   0x015D,
										   0x0219,
										   0x2033,
										   0x00A7,
										   0x003B,
										   0x0037,
										   0x215E,
										   0x2087,
										   0xF737,
										   0x2077,
										   0x2592,
										   0x03C3,
										   0x03C2,
										   0x223C,
										   0x0036,
										   0x2086,
										   0xF736,
										   0x2076,
										   0x002F,
										   0x263A,
										   0x0020,
										   0x00A0,
										   0x2660,
										   0xF6F2,
										   0x00A3,
										   0x220B,
										   0x2211,
										   0x263C,
										   0x0074,
										   0x03C4,
										   0x0167,
										   0x0165,
										   0x0163,
										   0x021B,
										   0x2234,
										   0x03B8,
										   0x03D1,
										   0x00FE,
										   0x0033,
										   0x215C,
										   0x2083,
										   0xF733,
										   0x00BE,
										   0xF6DE,
										   0x00B3,
										   0x02DC,
										   0x0303,
										   0x0384,
										   0x2122,
										   0xF8EA,
										   0xF6DB,
										   0x25BC,
										   0x25C4,
										   0x25BA,
										   0x25B2,
										   0xF6F3,
										   0x0032,
										   0x2025,
										   0x2082,
										   0xF732,
										   0x00B2,
										   0x2154,
										   0x0075,
										   0x00FA,
										   0x016D,
										   0x00FB,
										   0x00FC,
										   0x00F9,
										   0x01B0,
										   0x0171,
										   0x016B,
										   0x005F,
										   0x2017,
										   0x222A,
										   0x2200,
										   0x0173,
										   0x2580,
										   0x03C5,
										   0x03CB,
										   0x03B0,
										   0x03CD,
										   0x016F,
										   0x0169,
										   0x0076,
										   0x0077,
										   0x1E83,
										   0x0175,
										   0x1E85,
										   0x2118,
										   0x1E81,
										   0x0078,
										   0x03BE,
										   0x0079,
										   0x00FD,
										   0x0177,
										   0x00FF,
										   0x00A5,
										   0x1EF3,
										   0x007A,
										   0x017A,
										   0x017E,
										   0x017C,
										   0x0030,
										   0x2080,
										   0xF730,
										   0x2070,
										   0x03B6
									   };
		#endregion

		#region GLYPH
		private static string[] _glyph = {
											"A",
											"AE",
											"AEacute",
											"AEsmall",
											"Aacute",
											"Aacutesmall",
											"Abreve",
											"Acircumflex",
											"Acircumflexsmall",
											"Acute",
											"Acutesmall",
											"Adieresis",
											"Adieresissmall",
											"Agrave",
											"Agravesmall",
											"Alpha",
											"Alphatonos",
											"Amacron",
											"Aogonek",
											"Aring",
											"Aringacute",
											"Aringsmall",
											"Asmall",
											"Atilde",
											"Atildesmall",
											"B",
											"Beta",
											"Brevesmall",
											"Bsmall",
											"C",
											"Cacute",
											"Caron",
											"Caronsmall",
											"Ccaron",
											"Ccedilla",
											"Ccedillasmall",
											"Ccircumflex",
											"Cdotaccent",
											"Cedillasmall",
											"Chi",
											"Circumflexsmall",
											"Csmall",
											"D",
											"Dcaron",
											"Dcroat",
											"Delta",
											"Delta",
											"Dieresis",
											"DieresisAcute",
											"DieresisGrave",
											"Dieresissmall",
											"Dotaccentsmall",
											"Dsmall",
											"E",
											"Eacute",
											"Eacutesmall",
											"Ebreve",
											"Ecaron",
											"Ecircumflex",
											"Ecircumflexsmall",
											"Edieresis",
											"Edieresissmall",
											"Edotaccent",
											"Egrave",
											"Egravesmall",
											"Emacron",
											"Eng",
											"Eogonek",
											"Epsilon",
											"Epsilontonos",
											"Esmall",
											"Eta",
											"Etatonos",
											"Eth",
											"Ethsmall",
											"Euro",
											"F",
											"Fsmall",
											"G",
											"Gamma",
											"Gbreve",
											"Gcaron",
											"Gcircumflex",
											"Gcommaaccent",
											"Gdotaccent",
											"Grave",
											"Gravesmall",
											"Gsmall",
											"H",
											"H18533",
											"H18543",
											"H18551",
											"H22073",
											"Hbar",
											"Hcircumflex",
											"Hsmall",
											"Hungarumlaut",
											"Hungarumlautsmall",
											"I",
											"IJ",
											"Iacute",
											"Iacutesmall",
											"Ibreve",
											"Icircumflex",
											"Icircumflexsmall",
											"Idieresis",
											"Idieresissmall",
											"Idotaccent",
											"Ifraktur",
											"Igrave",
											"Igravesmall",
											"Imacron",
											"Iogonek",
											"Iota",
											"Iotadieresis",
											"Iotatonos",
											"Ismall",
											"Itilde",
											"J",
											"Jcircumflex",
											"Jsmall",
											"K",
											"Kappa",
											"Kcommaaccent",
											"Ksmall",
											"L",
											"LL",
											"Lacute",
											"Lambda",
											"Lcaron",
											"Lcommaaccent",
											"Ldot",
											"Lslash",
											"Lslashsmall",
											"Lsmall",
											"M",
											"Macron",
											"Macronsmall",
											"Msmall",
											"Mu",
											"N",
											"Nacute",
											"Ncaron",
											"Ncommaaccent",
											"Nsmall",
											"Ntilde",
											"Ntildesmall",
											"Nu",
											"O",
											"OE",
											"OEsmall",
											"Oacute",
											"Oacutesmall",
											"Obreve",
											"Ocircumflex",
											"Ocircumflexsmall",
											"Odieresis",
											"Odieresissmall",
											"Ogoneksmall",
											"Ograve",
											"Ogravesmall",
											"Ohorn",
											"Ohungarumlaut",
											"Omacron",
											"Omega",
											"Omega",
											"Omegatonos",
											"Omicron",
											"Omicrontonos",
											"Oslash",
											"Oslashacute",
											"Oslashsmall",
											"Osmall",
											"Otilde",
											"Otildesmall",
											"P",
											"Phi",
											"Pi",
											"Psi",
											"Psmall",
											"Q",
											"Qsmall",
											"R",
											"Racute",
											"Rcaron",
											"Rcommaaccent",
											"Rfraktur",
											"Rho",
											"Ringsmall",
											"Rsmall",
											"S",
											"SF010000",
											"SF020000",
											"SF030000",
											"SF040000",
											"SF050000",
											"SF060000",
											"SF070000",
											"SF080000",
											"SF090000",
											"SF100000",
											"SF110000",
											"SF190000",
											"SF200000",
											"SF210000",
											"SF220000",
											"SF230000",
											"SF240000",
											"SF250000",
											"SF260000",
											"SF270000",
											"SF280000",
											"SF360000",
											"SF370000",
											"SF380000",
											"SF390000",
											"SF400000",
											"SF410000",
											"SF420000",
											"SF430000",
											"SF440000",
											"SF450000",
											"SF460000",
											"SF470000",
											"SF480000",
											"SF490000",
											"SF500000",
											"SF510000",
											"SF520000",
											"SF530000",
											"SF540000",
											"Sacute",
											"Scaron",
											"Scaronsmall",
											"Scedilla",
											"Scedilla",
											"Scircumflex",
											"Scommaaccent",
											"Sigma",
											"Ssmall",
											"T",
											"Tau",
											"Tbar",
											"Tcaron",
											"Tcommaaccent",
											"Tcommaaccent",
											"Theta",
											"Thorn",
											"Thornsmall",
											"Tildesmall",
											"Tsmall",
											"U",
											"Uacute",
											"Uacutesmall",
											"Ubreve",
											"Ucircumflex",
											"Ucircumflexsmall",
											"Udieresis",
											"Udieresissmall",
											"Ugrave",
											"Ugravesmall",
											"Uhorn",
											"Uhungarumlaut",
											"Umacron",
											"Uogonek",
											"Upsilon",
											"Upsilon1",
											"Upsilondieresis",
											"Upsilontonos",
											"Uring",
											"Usmall",
											"Utilde",
											"V",
											"Vsmall",
											"W",
											"Wacute",
											"Wcircumflex",
											"Wdieresis",
											"Wgrave",
											"Wsmall",
											"X",
											"Xi",
											"Xsmall",
											"Y",
											"Yacute",
											"Yacutesmall",
											"Ycircumflex",
											"Ydieresis",
											"Ydieresissmall",
											"Ygrave",
											"Ysmall",
											"Z",
											"Zacute",
											"Zcaron",
											"Zcaronsmall",
											"Zdotaccent",
											"Zeta",
											"Zsmall",
											"a",
											"aacute",
											"abreve",
											"acircumflex",
											"acute",
											"acutecomb",
											"adieresis",
											"ae",
											"aeacute",
											"afii00208",
											"afii10017",
											"afii10018",
											"afii10019",
											"afii10020",
											"afii10021",
											"afii10022",
											"afii10023",
											"afii10024",
											"afii10025",
											"afii10026",
											"afii10027",
											"afii10028",
											"afii10029",
											"afii10030",
											"afii10031",
											"afii10032",
											"afii10033",
											"afii10034",
											"afii10035",
											"afii10036",
											"afii10037",
											"afii10038",
											"afii10039",
											"afii10040",
											"afii10041",
											"afii10042",
											"afii10043",
											"afii10044",
											"afii10045",
											"afii10046",
											"afii10047",
											"afii10048",
											"afii10049",
											"afii10050",
											"afii10051",
											"afii10052",
											"afii10053",
											"afii10054",
											"afii10055",
											"afii10056",
											"afii10057",
											"afii10058",
											"afii10059",
											"afii10060",
											"afii10061",
											"afii10062",
											"afii10063",
											"afii10064",
											"afii10065",
											"afii10066",
											"afii10067",
											"afii10068",
											"afii10069",
											"afii10070",
											"afii10071",
											"afii10072",
											"afii10073",
											"afii10074",
											"afii10075",
											"afii10076",
											"afii10077",
											"afii10078",
											"afii10079",
											"afii10080",
											"afii10081",
											"afii10082",
											"afii10083",
											"afii10084",
											"afii10085",
											"afii10086",
											"afii10087",
											"afii10088",
											"afii10089",
											"afii10090",
											"afii10091",
											"afii10092",
											"afii10093",
											"afii10094",
											"afii10095",
											"afii10096",
											"afii10097",
											"afii10098",
											"afii10099",
											"afii10100",
											"afii10101",
											"afii10102",
											"afii10103",
											"afii10104",
											"afii10105",
											"afii10106",
											"afii10107",
											"afii10108",
											"afii10109",
											"afii10110",
											"afii10145",
											"afii10146",
											"afii10147",
											"afii10148",
											"afii10192",
											"afii10193",
											"afii10194",
											"afii10195",
											"afii10196",
											"afii10831",
											"afii10832",
											"afii10846",
											"afii299",
											"afii300",
											"afii301",
											"afii57381",
											"afii57388",
											"afii57392",
											"afii57393",
											"afii57394",
											"afii57395",
											"afii57396",
											"afii57397",
											"afii57398",
											"afii57399",
											"afii57400",
											"afii57401",
											"afii57403",
											"afii57407",
											"afii57409",
											"afii57410",
											"afii57411",
											"afii57412",
											"afii57413",
											"afii57414",
											"afii57415",
											"afii57416",
											"afii57417",
											"afii57418",
											"afii57419",
											"afii57420",
											"afii57421",
											"afii57422",
											"afii57423",
											"afii57424",
											"afii57425",
											"afii57426",
											"afii57427",
											"afii57428",
											"afii57429",
											"afii57430",
											"afii57431",
											"afii57432",
											"afii57433",
											"afii57434",
											"afii57440",
											"afii57441",
											"afii57442",
											"afii57443",
											"afii57444",
											"afii57445",
											"afii57446",
											"afii57448",
											"afii57449",
											"afii57450",
											"afii57451",
											"afii57452",
											"afii57453",
											"afii57454",
											"afii57455",
											"afii57456",
											"afii57457",
											"afii57458",
											"afii57470",
											"afii57505",
											"afii57506",
											"afii57507",
											"afii57508",
											"afii57509",
											"afii57511",
											"afii57512",
											"afii57513",
											"afii57514",
											"afii57519",
											"afii57534",
											"afii57636",
											"afii57645",
											"afii57658",
											"afii57664",
											"afii57665",
											"afii57666",
											"afii57667",
											"afii57668",
											"afii57669",
											"afii57670",
											"afii57671",
											"afii57672",
											"afii57673",
											"afii57674",
											"afii57675",
											"afii57676",
											"afii57677",
											"afii57678",
											"afii57679",
											"afii57680",
											"afii57681",
											"afii57682",
											"afii57683",
											"afii57684",
											"afii57685",
											"afii57686",
											"afii57687",
											"afii57688",
											"afii57689",
											"afii57690",
											"afii57694",
											"afii57695",
											"afii57700",
											"afii57705",
											"afii57716",
											"afii57717",
											"afii57718",
											"afii57723",
											"afii57793",
											"afii57794",
											"afii57795",
											"afii57796",
											"afii57797",
											"afii57798",
											"afii57799",
											"afii57800",
											"afii57801",
											"afii57802",
											"afii57803",
											"afii57804",
											"afii57806",
											"afii57807",
											"afii57839",
											"afii57841",
											"afii57842",
											"afii57929",
											"afii61248",
											"afii61289",
											"afii61352",
											"afii61573",
											"afii61574",
											"afii61575",
											"afii61664",
											"afii63167",
											"afii64937",
											"agrave",
											"aleph",
											"alpha",
											"alphatonos",
											"amacron",
											"ampersand",
											"ampersandsmall",
											"angle",
											"angleleft",
											"angleright",
											"anoteleia",
											"aogonek",
											"approxequal",
											"aring",
											"aringacute",
											"arrowboth",
											"arrowdblboth",
											"arrowdbldown",
											"arrowdblleft",
											"arrowdblright",
											"arrowdblup",
											"arrowdown",
											"arrowhorizex",
											"arrowleft",
											"arrowright",
											"arrowup",
											"arrowupdn",
											"arrowupdnbse",
											"arrowvertex",
											"asciicircum",
											"asciitilde",
											"asterisk",
											"asteriskmath",
											"abaseior",
											"at",
											"atilde",
											"b",
											"backslash",
											"bar",
											"beta",
											"block",
											"braceex",
											"braceleft",
											"braceleftbt",
											"braceleftmid",
											"bracelefttp",
											"braceright",
											"bracerightbt",
											"bracerightmid",
											"bracerighttp",
											"bracketleft",
											"bracketleftbt",
											"bracketleftex",
											"bracketlefttp",
											"bracketright",
											"bracketrightbt",
											"bracketrightex",
											"bracketrighttp",
											"breve",
											"brokenbar",
											"bbaseior",
											"bullet",
											"c",
											"cacute",
											"caron",
											"carriagereturn",
											"ccaron",
											"ccedilla",
											"ccircumflex",
											"cdotaccent",
											"cedilla",
											"cent",
											"centinferior",
											"centoldstyle",
											"centbaseior",
											"chi",
											"circle",
											"circlemultiply",
											"circleplus",
											"circumflex",
											"club",
											"colon",
											"colonmonetary",
											"comma",
											"commaaccent",
											"commainferior",
											"commabaseior",
											"congruent",
											"copyright",
											"copyrightsans",
											"copyrightserif",
											"currency",
											"cyrBreve",
											"cyrFlex",
											"cyrbreve",
											"cyrflex",
											"d",
											"dagger",
											"daggerdbl",
											"dblGrave",
											"dblgrave",
											"dcaron",
											"dcroat",
											"degree",
											"delta",
											"diamond",
											"dieresis",
											"dieresisacute",
											"dieresisgrave",
											"dieresistonos",
											"divide",
											"dkshade",
											"dnblock",
											"dollar",
											"dollarinferior",
											"dollaroldstyle",
											"dollarbaseior",
											"dong",
											"dotaccent",
											"dotbelowcomb",
											"dotlessi",
											"dotlessj",
											"dotmath",
											"dbaseior",
											"e",
											"eacute",
											"ebreve",
											"ecaron",
											"ecircumflex",
											"edieresis",
											"edotaccent",
											"egrave",
											"eight",
											"eightinferior",
											"eightoldstyle",
											"eightbaseior",
											"element",
											"ellipsis",
											"emacron",
											"emdash",
											"emptyset",
											"endash",
											"eng",
											"eogonek",
											"epsilon",
											"epsilontonos",
											"equal",
											"equivalence",
											"estimated",
											"ebaseior",
											"eta",
											"etatonos",
											"eth",
											"exclam",
											"exclamdbl",
											"exclamdown",
											"exclamdownsmall",
											"exclamsmall",
											"existential",
											"f",
											"female",
											"ff",
											"ffi",
											"ffl",
											"fi",
											"figuredash",
											"filledbox",
											"filledrect",
											"five",
											"fiveeighths",
											"fiveinferior",
											"fiveoldstyle",
											"fivebaseior",
											"fl",
											"florin",
											"four",
											"fourinferior",
											"fouroldstyle",
											"fourbaseior",
											"fraction",
											"fraction",
											"franc",
											"g",
											"gamma",
											"gbreve",
											"gcaron",
											"gcircumflex",
											"gcommaaccent",
											"gdotaccent",
											"germandbls",
											"gradient",
											"grave",
											"gravecomb",
											"greater",
											"greaterequal",
											"guillemotleft",
											"guillemotright",
											"guilsinglleft",
											"guilsinglright",
											"h",
											"hbar",
											"hcircumflex",
											"heart",
											"hookabovecomb",
											"house",
											"hungarumlaut",
											"hyphen",
											"hyphen",
											"hypheninferior",
											"hyphenbaseior",
											"i",
											"iacute",
											"ibreve",
											"icircumflex",
											"idieresis",
											"igrave",
											"ij",
											"imacron",
											"infinity",
											"integral",
											"integralbt",
											"integralex",
											"integraltp",
											"intersection",
											"invbullet",
											"invcircle",
											"invsmileface",
											"iogonek",
											"iota",
											"iotadieresis",
											"iotadieresistonos",
											"iotatonos",
											"ibaseior",
											"itilde",
											"j",
											"jcircumflex",
											"k",
											"kappa",
											"kcommaaccent",
											"kgreenlandic",
											"l",
											"lacute",
											"lambda",
											"lcaron",
											"lcommaaccent",
											"ldot",
											"less",
											"lessequal",
											"lfblock",
											"lira",
											"ll",
											"logicaland",
											"logicalnot",
											"logicalor",
											"longs",
											"lozenge",
											"lslash",
											"lbaseior",
											"ltshade",
											"m",
											"macron",
											"macron",
											"male",
											"minus",
											"minute",
											"mbaseior",
											"mu",
											"mu",
											"multiply",
											"musicalnote",
											"musicalnotedbl",
											"n",
											"nacute",
											"napostrophe",
											"ncaron",
											"ncommaaccent",
											"nine",
											"nineinferior",
											"nineoldstyle",
											"ninebaseior",
											"notelement",
											"notequal",
											"notsubset",
											"nbaseior",
											"ntilde",
											"nu",
											"numbersign",
											"o",
											"oacute",
											"obreve",
											"ocircumflex",
											"odieresis",
											"oe",
											"ogonek",
											"ograve",
											"ohorn",
											"ohungarumlaut",
											"omacron",
											"omega",
											"omega1",
											"omegatonos",
											"omicron",
											"omicrontonos",
											"one",
											"onedotenleader",
											"oneeighth",
											"onefitted",
											"onehalf",
											"oneinferior",
											"oneoldstyle",
											"onequarter",
											"onebaseior",
											"onethird",
											"openbullet",
											"ordfeminine",
											"ordmasculine",
											"orthogonal",
											"oslash",
											"oslashacute",
											"obaseior",
											"otilde",
											"p",
											"paragraph",
											"parenleft",
											"parenleftbt",
											"parenleftex",
											"parenleftinferior",
											"parenleftbaseior",
											"parenlefttp",
											"parenright",
											"parenrightbt",
											"parenrightex",
											"parenrightinferior",
											"parenrightbaseior",
											"parenrighttp",
											"partialdiff",
											"percent",
											"period",
											"periodcentered",
											"periodcentered",
											"periodinferior",
											"periodbaseior",
											"perpendicular",
											"perthousand",
											"peseta",
											"phi",
											"phi1",
											"pi",
											"plus",
											"plusminus",
											"prescription",
											"product",
											"propersubset",
											"properbaseset",
											"proportional",
											"psi",
											"q",
											"question",
											"questiondown",
											"questiondownsmall",
											"questionsmall",
											"quotedbl",
											"quotedblbase",
											"quotedblleft",
											"quotedblright",
											"quoteleft",
											"quotereversed",
											"quoteright",
											"quotesinglbase",
											"quotesingle",
											"r",
											"racute",
											"radical",
											"radicalex",
											"rcaron",
											"rcommaaccent",
											"reflexsubset",
											"reflexbaseset",
											"registered",
											"registersans",
											"registerserif",
											"revlogicalnot",
											"rho",
											"ring",
											"rbaseior",
											"rtblock",
											"rupiah",
											"s",
											"sacute",
											"scaron",
											"scedilla",
											"scedilla",
											"scircumflex",
											"scommaaccent",
											"second",
											"section",
											"semicolon",
											"seven",
											"seveneighths",
											"seveninferior",
											"sevenoldstyle",
											"sevenbaseior",
											"shade",
											"sigma",
											"sigma1",
											"similar",
											"six",
											"sixinferior",
											"sixoldstyle",
											"sixbaseior",
											"slash",
											"smileface",
											"space",
											"space",
											"spade",
											"sbaseior",
											"sterling",
											"suchthat",
											"summation",
											"sun",
											"t",
											"tau",
											"tbar",
											"tcaron",
											"tcommaaccent",
											"tcommaaccent",
											"therefore",
											"theta",
											"theta1",
											"thorn",
											"three",
											"threeeighths",
											"threeinferior",
											"threeoldstyle",
											"threequarters",
											"threequartersemdash",
											"threebaseior",
											"tilde",
											"tildecomb",
											"tonos",
											"trademark",
											"trademarksans",
											"trademarkserif",
											"triagdn",
											"triaglf",
											"triagrt",
											"triagup",
											"tbaseior",
											"two",
											"twodotenleader",
											"twoinferior",
											"twooldstyle",
											"twobaseior",
											"twothirds",
											"u",
											"uacute",
											"ubreve",
											"ucircumflex",
											"udieresis",
											"ugrave",
											"uhorn",
											"uhungarumlaut",
											"umacron",
											"underscore",
											"underscoredbl",
											"union",
											"universal",
											"uogonek",
											"upblock",
											"upsilon",
											"upsilondieresis",
											"upsilondieresistonos",
											"upsilontonos",
											"uring",
											"utilde",
											"v",
											"w",
											"wacute",
											"wcircumflex",
											"wdieresis",
											"weierstrass",
											"wgrave",
											"x",
											"xi",
											"y",
											"yacute",
											"ycircumflex",
											"ydieresis",
											"yen",
											"ygrave",
											"z",
											"zacute",
											"zcaron",
											"zdotaccent",
											"zero",
											"zeroinferior",
											"zerooldstyle",
											"zerobaseior",
											"zeta"
										};
		#endregion

		#region CODE		
		private static int[] _pdfcode = {
											101,//A
											306,//AE
											0,//AEacute
											346,//AEsmall
											301,//Aacute
											341,//Aacutesmall
											0,//Abreve
											302,//Acircumflex
											342,//Acircumflexsmall
											264,//Acute
											0,//Acutesmall
											304,//Adieresis
											344,//Adieresissmall
											300,//Agrave
											340,//Agravesmall
											0,//Alpha
											0,//Alphatonos
											0,//Amacron
											0,//Aogonek
											305,//Aring
											0,//Aringacute
											345,//Aringsmall
											141,//Asmall
											303,//Atilde
											343,//Atildesmall
											102,//B
											0,//Beta
											0,//Brevesmall
											142,//Bsmall
											103,//C
											0,//Cacute
											0,//Caron
											0,//Caronsmall
											0,//Ccaron
											307,//Ccedilla
											347,//Ccedillasmall
											0,//Ccircumflex
											0,//Cdotaccent
											0,//Cedillasmall
											0,//Chi
											0,//Circumflexsmall
											143,//Csmall
											104,//D
											0,//Dcaron
											0,//Dcroat
											0,//Delta
											0,//Delta
											250,//Dieresis
											0,//DieresisAcute
											0,//DieresisGrave
											0,//Dieresissmall
											0,//Dotaccentsmall
											144,//Dsmall
											105,//E
											311,//Eacute
											351,//Eacutesmall
											0,//Ebreve
											0,//Ecaron
											312,//Ecircumflex
											352,//Ecircumflexsmall
											313,//Edieresis
											353,//Edieresissmall
											0,//Edotaccent
											310,//Egrave
											350,//Egravesmall
											0,//Emacron
											0,//Eng
											0,//Eogonek
											0,//Epsilon
											0,//Epsilontonos
											145,//Esmall
											0,//Eta
											0,//Etatonos
											320,//Eth
											360,//Ethsmall
											200,//Euro
											106,//F
											146,//Fsmall
											107,//G
											0,//Gamma
											0,//Gbreve
											0,//Gcaron
											0,//Gcircumflex
											0,//Gcommaaccent
											0,//Gdotaccent
											140,//Grave
											0,//Gravesmall
											147,//Gsmall
											110,//H
											0,//H18533
											0,//H18543
											0,//H18551
											0,//H22073
											0,//Hbar
											0,//Hcircumflex
											150,//Hsmall
											0,//Hungarumlaut
											0,//Hungarumlautsmall
											111,//I
											0,//IJ
											315,//Iacute
											355,//Iacutesmall
											0,//Ibreve
											316,//Icircumflex
											356,//Icircumflexsmall
											317,//Idieresis
											357,//Idieresissmall
											0,//Idotaccent
											0,//Ifraktur
											314,//Igrave
											354,//Igravesmall
											0,//Imacron
											0,//Iogonek
											0,//Iota
											0,//Iotadieresis
											0,//Iotatonos
											151,//Ismall
											0,//Itilde
											112,//J
											0,//Jcircumflex
											152,//Jsmall
											113,//K
											0,//Kappa
											0,//Kcommaaccent
											153,//Ksmall
											114,//L
											0,//LL
											0,//Lacute
											0,//Lambda
											0,//Lcaron
											0,//Lcommaaccent
											0,//Ldot
											0,//Lslash
											0,//Lslashsmall
											154,//Lsmall
											115,//M
											257,//Macron
											0,//Macronsmall
											155,//Msmall
											265,//Mu
											116,//N
											0,//Nacute
											0,//Ncaron
											0,//Ncommaaccent
											156,//Nsmall
											321,//Ntilde
											361,//Ntildesmall
											0,//Nu
											117,//O
											214,//OE
											234,//OEsmall
											323,//Oacute
											363,//Oacutesmall
											0,//Obreve
											324,//Ocircumflex
											364,//Ocircumflexsmall
											326,//Odieresis
											366,//Odieresissmall
											0,//Ogoneksmall
											322,//Ograve
											362,//Ogravesmall
											0,//Ohorn
											0,//Ohungarumlaut
											0,//Omacron
											0,//Omega
											0,//Omega
											0,//Omegatonos
											0,//Omicron
											0,//Omicrontonos
											330,//Oslash
											0,//Oslashacute
											370,//Oslashsmall
											157,//Osmall
											325,//Otilde
											365,//Otildesmall
											120,//P
											0,//Phi
											0,//Pi
											0,//Psi
											160,//Psmall
											121,//Q
											161,//Qsmall
											122,//R
											0,//Racute
											0,//Rcaron
											0,//Rcommaaccent
											0,//Rfraktur
											0,//Rho
											0,//Ringsmall
											162,//Rsmall
											123,//S
											0,//SF010000
											0,//SF020000
											0,//SF030000
											0,//SF040000
											0,//SF050000
											0,//SF060000
											0,//SF070000
											0,//SF080000
											0,//SF090000
											0,//SF100000
											0,//SF110000
											0,//SF190000
											0,//SF200000
											0,//SF210000
											0,//SF220000
											0,//SF230000
											0,//SF240000
											0,//SF250000
											0,//SF260000
											0,//SF270000
											0,//SF280000
											0,//SF360000
											0,//SF370000
											0,//SF380000
											0,//SF390000
											0,//SF400000
											0,//SF410000
											0,//SF420000
											0,//SF430000
											0,//SF440000
											0,//SF450000
											0,//SF460000
											0,//SF470000
											0,//SF480000
											0,//SF490000
											0,//SF500000
											0,//SF510000
											0,//SF520000
											0,//SF530000
											0,//SF540000
											0,//Sacute
											212,//Scaron
											232,//Scaronsmall
											0,//Scedilla
											0,//Scedilla
											0,//Scircumflex
											0,//Scommaaccent
											0,//Sigma
											163,//Ssmall
											124,//T
											0,//Tau
											0,//Tbar
											0,//Tcaron
											0,//Tcommaaccent
											0,//Tcommaaccent
											0,//Theta
											336,//Thorn
											376,//Thornsmall
											0,//Tildesmall
											164,//Tsmall
											125,//U
											332,//Uacute
											372,//Uacutesmall
											0,//Ubreve
											333,//Ucircumflex
											373,//Ucircumflexsmall
											334,//Udieresis
											374,//Udieresissmall
											331,//Ugrave
											371,//Ugravesmall
											0,//Uhorn
											0,//Uhungarumlaut
											0,//Umacron
											0,//Uogonek
											0,//Upsilon
											0,//Upsilon1
											0,//Upsilondieresis
											0,//Upsilontonos
											0,//Uring
											165,//Usmall
											0,//Utilde
											126,//V
											166,//Vsmall
											127,//W
											0,//Wacute
											0,//Wcircumflex
											0,//Wdieresis
											0,//Wgrave
											167,//Wsmall
											130,//X
											0,//Xi
											170,//Xsmall
											131,//Y
											335,//Yacute
											375,//Yacutesmall
											0,//Ycircumflex
											237,//Ydieresis
											377,//Ydieresissmall
											0,//Ygrave
											171,//Ysmall
											132,//Z
											0,//Zacute
											216,//Zcaron
											236,//Zcaronsmall
											0,//Zdotaccent
											0,//Zeta
											172,//Zsmall
											101,//a
											301,//aacute
											0,//abreve
											302,//acircumflex
											264,//acute
											0,//acutecomb
											304,//adieresis
											306,//ae
											0,//aeacute
											0,//afii00208
											0,//afii10017
											0,//afii10018
											0,//afii10019
											0,//afii10020
											0,//afii10021
											0,//afii10022
											0,//afii10023
											0,//afii10024
											0,//afii10025
											0,//afii10026
											0,//afii10027
											0,//afii10028
											0,//afii10029
											0,//afii10030
											0,//afii10031
											0,//afii10032
											0,//afii10033
											0,//afii10034
											0,//afii10035
											0,//afii10036
											0,//afii10037
											0,//afii10038
											0,//afii10039
											0,//afii10040
											0,//afii10041
											0,//afii10042
											0,//afii10043
											0,//afii10044
											0,//afii10045
											0,//afii10046
											0,//afii10047
											0,//afii10048
											0,//afii10049
											0,//afii10050
											0,//afii10051
											0,//afii10052
											0,//afii10053
											0,//afii10054
											0,//afii10055
											0,//afii10056
											0,//afii10057
											0,//afii10058
											0,//afii10059
											0,//afii10060
											0,//afii10061
											0,//afii10062
											0,//afii10063
											0,//afii10064
											0,//afii10065
											0,//afii10066
											0,//afii10067
											0,//afii10068
											0,//afii10069
											0,//afii10070
											0,//afii10071
											0,//afii10072
											0,//afii10073
											0,//afii10074
											0,//afii10075
											0,//afii10076
											0,//afii10077
											0,//afii10078
											0,//afii10079
											0,//afii10080
											0,//afii10081
											0,//afii10082
											0,//afii10083
											0,//afii10084
											0,//afii10085
											0,//afii10086
											0,//afii10087
											0,//afii10088
											0,//afii10089
											0,//afii10090
											0,//afii10091
											0,//afii10092
											0,//afii10093
											0,//afii10094
											0,//afii10095
											0,//afii10096
											0,//afii10097
											0,//afii10098
											0,//afii10099
											0,//afii10100
											0,//afii10101
											0,//afii10102
											0,//afii10103
											0,//afii10104
											0,//afii10105
											0,//afii10106
											0,//afii10107
											0,//afii10108
											0,//afii10109
											0,//afii10110
											0,//afii10145
											0,//afii10146
											0,//afii10147
											0,//afii10148
											0,//afii10192
											0,//afii10193
											0,//afii10194
											0,//afii10195
											0,//afii10196
											0,//afii10831
											0,//afii10832
											0,//afii10846
											0,//afii299
											0,//afii300
											0,//afii301
											0,//afii57381
											0,//afii57388
											0,//afii57392
											0,//afii57393
											0,//afii57394
											0,//afii57395
											0,//afii57396
											0,//afii57397
											0,//afii57398
											0,//afii57399
											0,//afii57400
											0,//afii57401
											0,//afii57403
											0,//afii57407
											0,//afii57409
											0,//afii57410
											0,//afii57411
											0,//afii57412
											0,//afii57413
											0,//afii57414
											0,//afii57415
											0,//afii57416
											0,//afii57417
											0,//afii57418
											0,//afii57419
											0,//afii57420
											0,//afii57421
											0,//afii57422
											0,//afii57423
											0,//afii57424
											0,//afii57425
											0,//afii57426
											0,//afii57427
											0,//afii57428
											0,//afii57429
											0,//afii57430
											0,//afii57431
											0,//afii57432
											0,//afii57433
											0,//afii57434
											0,//afii57440
											0,//afii57441
											0,//afii57442
											0,//afii57443
											0,//afii57444
											0,//afii57445
											0,//afii57446
											0,//afii57448
											0,//afii57449
											0,//afii57450
											0,//afii57451
											0,//afii57452
											0,//afii57453
											0,//afii57454
											0,//afii57455
											0,//afii57456
											0,//afii57457
											0,//afii57458
											0,//afii57470
											0,//afii57505
											0,//afii57506
											0,//afii57507
											0,//afii57508
											0,//afii57509
											0,//afii57511
											0,//afii57512
											0,//afii57513
											0,//afii57514
											0,//afii57519
											0,//afii57534
											0,//afii57636
											0,//afii57645
											0,//afii57658
											0,//afii57664
											0,//afii57665
											0,//afii57666
											0,//afii57667
											0,//afii57668
											0,//afii57669
											0,//afii57670
											0,//afii57671
											0,//afii57672
											0,//afii57673
											0,//afii57674
											0,//afii57675
											0,//afii57676
											0,//afii57677
											0,//afii57678
											0,//afii57679
											0,//afii57680
											0,//afii57681
											0,//afii57682
											0,//afii57683
											0,//afii57684
											0,//afii57685
											0,//afii57686
											0,//afii57687
											0,//afii57688
											0,//afii57689
											0,//afii57690
											0,//afii57694
											0,//afii57695
											0,//afii57700
											0,//afii57705
											0,//afii57716
											0,//afii57717
											0,//afii57718
											0,//afii57723
											0,//afii57793
											0,//afii57794
											0,//afii57795
											0,//afii57796
											0,//afii57797
											0,//afii57798
											0,//afii57799
											0,//afii57800
											0,//afii57801
											0,//afii57802
											0,//afii57803
											0,//afii57804
											0,//afii57806
											0,//afii57807
											0,//afii57839
											0,//afii57841
											0,//afii57842
											0,//afii57929
											0,//afii61248
											0,//afii61289
											0,//afii61352
											0,//afii61573
											0,//afii61574
											0,//afii61575
											0,//afii61664
											0,//afii63167
											0,//afii64937
											300,//agrave
											0,//aleph
											0,//alpha
											0,//alphatonos
											0,//amacron
											46,//ampersand
											0,//ampersandsmall
											0,//angle
											0,//angleleft
											0,//angleright
											0,//anoteleia
											0,//aogonek
											0,//approxequal
											305,//aring
											0,//aringacute
											0,//arrowboth
											0,//arrowdblboth
											0,//arrowdbldown
											0,//arrowdblleft
											0,//arrowdblright
											0,//arrowdblup
											0,//arrowdown
											0,//arrowhorizex
											0,//arrowleft
											0,//arrowright
											0,//arrowup
											0,//arrowupdn
											0,//arrowupdnbse
											0,//arrowvertex
											136,//asciicircum
											176,//asciitilde
											52,//asterisk
											0,//asteriskmath
											0,//abaseior
											100,//at
											303,//atilde
											102,//b
											134,//backslash
											174,//bar
											0,//beta
											0,//block
											0,//braceex
											173,//braceleft
											0,//braceleftbt
											0,//braceleftmid
											0,//bracelefttp
											175,//braceright
											0,//bracerightbt
											0,//bracerightmid
											0,//bracerighttp
											133,//bracketleft
											0,//bracketleftbt
											0,//bracketleftex
											0,//bracketlefttp
											135,//bracketright
											0,//bracketrightbt
											0,//bracketrightex
											0,//bracketrighttp
											0,//breve
											246,//brokenbar
											0,//bbaseior
											225,//bullet
											103,//c
											0,//cacute
											0,//caron
											0,//carriagereturn
											0,//ccaron
											307,//ccedilla
											0,//ccircumflex
											0,//cdotaccent
											270,//cedilla
											242,//cent
											0,//centinferior
											0,//centoldstyle
											0,//centbaseior
											0,//chi
											0,//circle
											0,//circlemultiply
											0,//circleplus
											210,//circumflex
											0,//club
											72,//colon
											0,//colonmonetary
											54,//comma
											0,//commaaccent
											0,//commainferior
											0,//commabaseior
											0,//congruent
											251,//copyright
											0,//copyrightsans
											0,//copyrightserif
											244,//currency
											0,//cyrBreve
											0,//cyrFlex
											0,//cyrbreve
											0,//cyrflex
											104,//d
											206,//dagger
											207,//daggerdbl
											0,//dblGrave
											0,//dblgrave
											0,//dcaron
											0,//dcroat
											260,//degree
											0,//delta
											0,//diamond
											250,//dieresis
											0,//dieresisacute
											0,//dieresisgrave
											0,//dieresistonos
											367,//divide
											0,//dkshade
											0,//dnblock
											44,//dollar
											0,//dollarinferior
											0,//dollaroldstyle
											0,//dollarbaseior
											0,//dong
											0,//dotaccent
											0,//dotbelowcomb
											0,//dotlessi
											0,//dotlessj
											0,//dotmath
											0,//dbaseior
											105,//e
											311,//eacute
											0,//ebreve
											0,//ecaron
											312,//ecircumflex
											313,//edieresis
											0,//edotaccent
											310,//egrave
											70,//eight
											0,//eightinferior
											0,//eightoldstyle
											0,//eightbaseior
											0,//element
											205,//ellipsis
											0,//emacron
											227,//emdash
											0,//emptyset
											226,//endash
											0,//eng
											0,//eogonek
											0,//epsilon
											0,//epsilontonos
											75,//equal
											0,//equivalence
											0,//estimated
											0,//ebaseior
											0,//eta
											0,//etatonos
											320,//eth
											41,//exclam
											0,//exclamdbl
											241,//exclamdown
											0,//exclamdownsmall
											0,//exclamsmall
											0,//existential
											106,//f
											0,//female
											0,//ff
											0,//ffi
											0,//ffl
											0,//fi
											0,//figuredash
											0,//filledbox
											0,//filledrect
											65,//five
											0,//fiveeighths
											0,//fiveinferior
											0,//fiveoldstyle
											0,//fivebaseior
											0,//fl
											203,//florin
											64,//four
											0,//fourinferior
											0,//fouroldstyle
											0,//fourbaseior
											0,//fraction
											0,//fraction
											0,//franc
											107,//g
											0,//gamma
											0,//gbreve
											0,//gcaron
											0,//gcircumflex
											0,//gcommaaccent
											0,//gdotaccent
											337,//germandbls
											0,//gradient
											140,//grave
											0,//gravecomb
											76,//greater
											0,//greaterequal
											253,//guillemotleft
											273,//guillemotright
											213,//guilsinglleft
											233,//guilsinglright
											110,//h
											0,//hbar
											0,//hcircumflex
											0,//heart
											0,//hookabovecomb
											0,//house
											0,//hungarumlaut
											55,//hyphen
											55,//hyphen
											0,//hypheninferior
											0,//hyphenbaseior
											111,//i
											315,//iacute
											0,//ibreve
											316,//icircumflex
											317,//idieresis
											314,//igrave
											0,//ij
											0,//imacron
											0,//infinity
											0,//integral
											0,//integralbt
											0,//integralex
											0,//integraltp
											0,//intersection
											0,//invbullet
											0,//invcircle
											0,//invsmileface
											0,//iogonek
											0,//iota
											0,//iotadieresis
											0,//iotadieresistonos
											0,//iotatonos
											0,//ibaseior
											0,//itilde
											112,//j
											0,//jcircumflex
											113,//k
											0,//kappa
											0,//kcommaaccent
											0,//kgreenlandic
											114,//l
											0,//lacute
											0,//lambda
											0,//lcaron
											0,//lcommaaccent
											0,//ldot
											74,//less
											0,//lessequal
											0,//lfblock
											0,//lira
											0,//ll
											0,//logicaland
											254,//logicalnot
											0,//logicalor
											0,//longs
											0,//lozenge
											0,//lslash
											0,//lbaseior
											0,//ltshade
											115,//m
											257,//macron
											257,//macron
											0,//male
											0,//minus
											0,//minute
											0,//mbaseior
											265,//mu
											265,//mu
											327,//multiply
											0,//musicalnote
											0,//musicalnotedbl
											116,//n
											0,//nacute
											0,//napostrophe
											0,//ncaron
											0,//ncommaaccent
											71,//nine
											0,//nineinferior
											0,//nineoldstyle
											0,//ninebaseior
											0,//notelement
											0,//notequal
											0,//notsubset
											0,//nbaseior
											321,//ntilde
											0,//nu
											43,//numbersign
											117,//o
											323,//oacute
											0,//obreve
											324,//ocircumflex
											326,//odieresis
											214,//oe
											0,//ogonek
											322,//ograve
											0,//ohorn
											0,//ohungarumlaut
											0,//omacron
											0,//omega
											0,//omega1
											0,//omegatonos
											0,//omicron
											0,//omicrontonos
											61,//one
											0,//onedotenleader
											0,//oneeighth
											0,//onefitted
											275,//onehalf
											0,//oneinferior
											0,//oneoldstyle
											274,//onequarter
											0,//onebaseior
											0,//onethird
											0,//openbullet
											252,//ordfeminine
											272,//ordmasculine
											0,//orthogonal
											330,//oslash
											0,//oslashacute
											0,//obaseior
											325,//otilde
											120,//p
											266,//paragraph
											50,//parenleft
											0,//parenleftbt
											0,//parenleftex
											0,//parenleftinferior
											0,//parenleftbaseior
											0,//parenlefttp
											51,//parenright
											0,//parenrightbt
											0,//parenrightex
											0,//parenrightinferior
											0,//parenrightbaseior
											0,//parenrighttp
											0,//partialdiff
											45,//percent
											56,//period
											267,//periodcentered
											267,//periodcentered
											0,//periodinferior
											0,//periodbaseior
											0,//perpendicular
											211,//perthousand
											0,//peseta
											0,//phi
											0,//phi1
											0,//pi
											53,//plus
											261,//plusminus
											0,//prescription
											0,//product
											0,//propersubset
											0,//properbaseset
											0,//proportional
											0,//psi
											121,//q
											77,//question
											277,//questiondown
											0,//questiondownsmall
											0,//questionsmall
											42,//quotedbl
											204,//quotedblbase
											223,//quotedblleft
											224,//quotedblright
											221,//quoteleft
											0,//quotereversed
											222,//quoteright
											202,//quotesinglbase
											47,//quotesingle
											122,//r
											0,//racute
											0,//radical
											0,//radicalex
											0,//rcaron
											0,//rcommaaccent
											0,//reflexsubset
											0,//reflexbaseset
											256,//registered
											0,//registersans
											0,//registerserif
											0,//revlogicalnot
											0,//rho
											0,//ring
											0,//rbaseior
											0,//rtblock
											0,//rupiah
											123,//s
											0,//sacute
											212,//scaron
											0,//scedilla
											0,//scedilla
											0,//scircumflex
											0,//scommaaccent
											0,//second
											247,//section
											73,//semicolon
											67,//seven
											0,//seveneighths
											0,//seveninferior
											0,//sevenoldstyle
											0,//sevenbaseior
											0,//shade
											0,//sigma
											0,//sigma1
											0,//similar
											66,//six
											0,//sixinferior
											0,//sixoldstyle
											0,//sixbaseior
											57,//slash
											0,//smileface
											40,//space
											40,//space
											0,//spade
											0,//sbaseior
											243,//sterling
											0,//suchthat
											0,//summation
											0,//sun
											124,//t
											0,//tau
											0,//tbar
											0,//tcaron
											0,//tcommaaccent
											0,//tcommaaccent
											0,//therefore
											0,//theta
											0,//theta1
											336,//thorn
											63,//three
											0,//threeeighths
											0,//threeinferior
											0,//threeoldstyle
											276,//threequarters
											0,//threequartersemdash
											0,//threebaseior
											230,//tilde
											0,//tildecomb
											0,//tonos
											231,//trademark
											0,//trademarksans
											0,//trademarkserif
											0,//triagdn
											0,//triaglf
											0,//triagrt
											0,//triagup
											0,//tbaseior
											62,//two
											0,//twodotenleader
											0,//twoinferior
											0,//twooldstyle
											0,//twobaseior
											0,//twothirds
											125,//u
											332,//uacute
											0,//ubreve
											333,//ucircumflex
											334,//udieresis
											331,//ugrave
											0,//uhorn
											0,//uhungarumlaut
											0,//umacron
											137,//underscore
											0,//underscoredbl
											0,//union
											0,//universal
											0,//uogonek
											0,//upblock
											0,//upsilon
											0,//upsilondieresis
											0,//upsilondieresistonos
											0,//upsilontonos
											0,//uring
											0,//utilde
											126,//v
											127,//w
											0,//wacute
											0,//wcircumflex
											0,//wdieresis
											0,//weierstrass
											0,//wgrave
											130,//x
											0,//xi
											131,//y
											335,//yacute
											0,//ycircumflex
											237,//ydieresis
											245,//yen
											0,//ygrave
											132,//z
											0,//zacute
											216,//zcaron
											0,//zdotaccent
											60,//zero
											0,//zeroinferior
											0,//zerooldstyle
											0,//zerobaseior
											0//zeta
										};										
		#endregion

		private static Hashtable _UniToGlyph;
		private static Hashtable _UniToPDFCode;
		private static Hashtable _GlyphToUni;
		private static Hashtable _GlyphToPDFCode;

		/// <summary>
		/// Static class's constructor
		/// </summary>
		static GlyphConverter()
		{
			_UniToGlyph = new Hashtable();
			_UniToPDFCode = new Hashtable();
			_GlyphToUni = new Hashtable();
			_GlyphToPDFCode = new Hashtable();			
			for(int i = 0; i < _unicode.Length; i++) {
				if (!_UniToGlyph.ContainsKey(_unicode[i]))
					_UniToGlyph.Add(_unicode[i], _glyph[i]);
				if (!_UniToPDFCode.ContainsKey(_unicode[i]))
					_UniToPDFCode.Add(_unicode[i], _pdfcode[i]);
				if (!_GlyphToUni.ContainsKey(_glyph[i]))
					_GlyphToUni.Add(_glyph[i], _unicode[i]);
				if (!_GlyphToPDFCode.ContainsKey(_glyph[i]))
					_GlyphToPDFCode.Add(_glyph[i], _pdfcode[i]);
			}
		}

		/// <summary>
		/// Method that returns the Unicode Index of a Glyph
		/// </summary>
		/// <param name="glyphName">Glyph Name</param>
		/// <returns>Unicode Index</returns>
		public static int UnicodeFromGlyph(string glyphName)
		{
			if (_GlyphToUni.ContainsKey(glyphName)) {
				return Convert.ToInt32(_GlyphToUni[glyphName]);
			} else {
				return 0;
			}
		}

		/// <summary>
		/// Method that returns a Glyph From a Unicode Index
		/// </summary>
		/// <param name="unicodeIndex">Unicode Index</param>
		/// <returns>Glyph</returns>
		public static string GlyphFromUnicode(int unicodeIndex)
		{
			if (_UniToGlyph.ContainsKey(unicodeIndex)) {
                return Convert.ToString(_UniToGlyph[unicodeIndex]);
			} else {
				return "";
			}
		}

		/// <summary>
		/// Method that returns a PDF Code From a Glyph
		/// </summary>
		/// <param name="glyphName">Glyph Name</param>
		/// <returns>PDF Code</returns>
		public static string pdfCodeFromGlyph(string glyphName)
		{
			int resultCODE = 0;
			if (_GlyphToPDFCode.ContainsKey(glyphName)) {
				resultCODE = Convert.ToInt32(_GlyphToPDFCode[glyphName]);
			}
			if (resultCODE != 0) {
				return @"\" + resultCODE.ToString();
			} else {
				return "";
			}
		}

		/// <summary>
		/// Method that returns a PDF Code From a Unicode Index
		/// </summary>
		/// <param name="unicodeIndex">Unicode Index</param>
		/// <returns>PDF Code</returns>
		public static string pdfCodeFromUnicode(int unicodeIndex)
		{
			int resultCODE = 0;
			if (_UniToPDFCode.ContainsKey(unicodeIndex)) {
				resultCODE = Convert.ToInt32(_UniToPDFCode[unicodeIndex]);
			}
			if (resultCODE != 0) {
                return @"\" + resultCODE.ToString();
			} else {
				return "";
			}
		}

	}
}
